]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
tests: Add Params.parse() unit tests
authorFlorian Müllner <fmuellner@gnome.org>
Fri, 5 Jul 2019 15:52:37 +0000 (17:52 +0200)
committerFlorian Müllner <fmuellner@gnome.org>
Fri, 5 Jul 2019 16:28:26 +0000 (18:28 +0200)
Commit 46874eed0 accidentally changed the behavior of the function in
an incompatible way. Before addressing the actual issue, add a reproducer
to the unit tests to hopefully prevent future breakage.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/615

tests/meson.build
tests/unit/params.js [new file with mode: 0644]

index a6726f7bc908cafc22a1b4cd1f3faa1c99512d0b..1e84f423cac39b81cee87ef3165c5849c1d9e162 100644 (file)
@@ -10,7 +10,7 @@ run_test = configure_file(
 testenv = environment()
 testenv.set('GSETTINGS_SCHEMA_DIR', join_paths(meson.build_root(), 'data'))
 
-foreach test : ['insertSorted', 'jsParse', 'markup', 'url']
+foreach test : ['insertSorted', 'jsParse', 'markup', 'params', 'url']
   test(test, run_test,
     args: 'unit/@0@.js'.format(test),
     env: testenv,
diff --git a/tests/unit/params.js b/tests/unit/params.js
new file mode 100644 (file)
index 0000000..6ac4cc1
--- /dev/null
@@ -0,0 +1,32 @@
+const JsUnit = imports.jsUnit;
+const Params = imports.misc.params;
+
+function assertParamsEqual(params, expected) {
+    for (let p in params) {
+        JsUnit.assertTrue(p in expected);
+        JsUnit.assertEquals(params[p], expected[p]);
+    }
+}
+
+let defaults = {
+    foo: 'This is a test',
+    bar: null,
+    baz: 42
+};
+
+assertParamsEqual(
+    Params.parse(null, defaults),
+    defaults);
+
+assertParamsEqual(
+    Params.parse({ bar: 23 }, defaults),
+    { foo: 'This is a test', bar: 23, baz: 42 });
+
+JsUnit.assertRaises(
+    () => {
+        Params.parse({ extraArg: 'quz' }, defaults);
+    });
+
+assertParamsEqual(
+    Params.parse({ extraArg: 'quz' }, defaults, true),
+    { foo: 'This is a test', bar: null, baz: 42, extraArg: 'quz' });